System and method for providing intelligent location information

ABSTRACT

A method and system that includes extracting event models from at least one personal planning source of a user, wherein a parameter of an event model includes event location; periodically receiving location information of at least one mobile device of the user; storing the location information in a location log; a pattern worker module maintaining user location patterns through the location log; generating a location prediction from the extracted event models and the user location patterns; a first content worker module checking if the location prediction meets a set of content requirements; if the set of content requirements is satisfied, initiating content retrieval from at least one service; and pushing the content to the mobile device.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.15/047,248, filed 18 Feb. 2016, which is a continuation of U.S.application Ser. No. 13/838,103, filed 15 Mar. 2013, which claims thebenefit of U.S. Provisional application Ser. No. 61/643,761, filed on 07May 2012, all of which are incorporated in their entirety by thisreference.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1 is a schematic representation of a system of a preferredembodiment;

FIG. 2 is an exemplary screenshot of generated content for an upcomingflight;

FIG. 3 is an exemplary screenshot of generated content with a boardingpass for an upcoming flight;

FIG. 4 is an exemplary screenshot of generated content for an upcomingtrip to a hotel;

FIG. 5 is an exemplary screenshot of generated content for travelinformation when leaving for work;

FIGS. 6A-6C are exemplary screenshots of generated content to remind auser of a planned event;

FIG. 7 is an exemplary screenshot of generated content for weather basedon location prediction of a user;

FIG. 8 is a detailed schematic representation of components of alocation prediction platform of a preferred embodiment;

FIG. 9 is a flowchart representation of a method of a preferredembodiment;

FIG. 10 is a sequence diagram representation of a method of a preferredembodiment;

FIG. 11 is a flowchart representation of a variation of the method of apreferred embodiment for enabling platform use by third partyapplications and services;

FIG. 12 is a sequence diagram representation of a platform variation ofthe method of a preferred embodiment; and

FIGS. 13 and 14 are exemplary schematic representations of notificationspushed to a mobile device.

DESCRIPTION OF THE PREFERRED EMBODIMENTS

The following description of preferred embodiments of the invention isnot intended to limit the invention to these preferred embodiments, butrather to enable any person skilled in the art to make and use thisinvention.

1. System for Providing Intelligent Location Information

As shown in FIG. 1, a system for providing intelligent locationinformation includes a location prediction platform 110, a locationaware application 120, and a developer interface 130 to the locationprediction platform 110. The system functions to provide predictiveintelligence for mobile devices. A mobile device application thatleverages the predictive intelligence generated in the system can beused to display information alerts (e.g., weather, traffic, parking,restaurant, and other information), provide contextually appropriateinteractions at an appropriate time, trigger application actions,intelligently complete transactions based on location and travel routes,trigger physical interactions (e.g., turn on/off lights, a vehicle,heater/air-conditioning system, etc.), and/or perform other actions inresponse to and in anticipation of a user's location and the context ofthat location. The system can migrate a substantial portion of thelocation intelligence to server side components, which function toleverage the data and centralized access point to a plurality of mobiledevices. The location prediction platform can be a multi-tenant platformthat manages the intelligent location information for numerous users,while the users can receive contextual information and interactivecontent through an application operable on a mobile device.

From a user perspective, the system can act as an intelligent personalassistant that anticipates actions and needs of the user andintelligently provides useful information and interactions at the propertime. As opposed to always reacting to user prompts or saturating theuser with information, the system can be used to intelligently bringrelevant information to the attention of the user at a contextuallyappropriate time. In one implementation, the system can be used toprovide an array of useful services. The system can target flightinformation that is extracted from email and/or calendar data of a user.The day before a flight, the application can alert the user of theupcoming flight, provide any related information such as flight delaysor destination weather, and provide an interactive interface to book aride to the airport or check-in to the flight, as shown in FIG. 2. Asthe user arrives at the airport for a planned flight, the applicationcan load a copy of the flight tickets, as shown in FIG. 3. The systemcan additionally target hotels, as shown in FIG. 4, car rentals,restaurant reservations, movie showings, music and performance events,and other planned events in a similar manner.

The system can additionally target more routine activities, such astravel to and from work. The system preferably builds intelligencearound a user's varying schedule and provides information at appropriatetimes. When a user leaves home to go to work, the application candisplay an alert with travel information for the route to work, as shownin FIG. 5. The application can also push content based on events plannedin a personal planning data source (e.g., email account, personalcalendar, account on a booking website, social network event, etc.). Aninitial message can be pushed to the user to remind the user of aplanned event, as shown in FIG. 6A. The system can additionally push areminder when the user should leave for the planned event (if the userhas not left already) based on the location of the planned event (i.e.,the predicted location of the user at the time of the event) and thecurrent location of the user, as shown in FIG. 6B. Additionally, thesystem can selectively send other escalating content such as anotherreminder, as shown in FIG. 6C, a functional interface to notify theother participants that the user is running late, or any suitableescalating notification. The application may additionally oralternatively provide the weather for where the user is traveling at atime when the user is anticipated to leave or is detected to leave, asshown in FIG. 7. Knowing that it is raining at the user's destinationwhen the user arrives does not help the user plan for the rain, but bynotifying the user of the prediction of rain around the time the userwill leave can give the user enough time to grab an umbrella or rainjacket. The application can additionally use the contextualcategorization of the locations visited by a user. For example, if theuser is going to work, the application can notify the user of workmeetings and tasks for when the user arrives. If the user is going homearound dinner time, the application can notify the user of a recipe orrestaurant suggestions or TV shows on that evening.

When the location prediction platform is configured with an outsidedeveloper/application interface, the application of the system can befurther integrated into a wider variety of applications enabled throughthe supplemental information and capabilities of the outsideapplication. The system can benefit from the capability ofanonymizing/abstracting location information and categorizing it intoinformation that can provide interactions that in raw location formatwould otherwise raise privacy concerns. Applications and variousservices can build interactions around contextual location scenariossuch as “leaving home”, leaving work”, “arriving home”, “arriving atwork”, “leaving for event X”, “catching a flight”, “landed in City Y”,and/or any suitable location based context. This alleviates third partyapplications from building the infrastructure to detect and identifyrelevant events, and it further alleviates users from sharing privateinformation, such as the geographic coordinates of the users home, tonumerous applications wishing to use that information. Third partyapplications can use such information to trigger application and/ordevice events, provide application or service specific information,and/or perform location predictive transactions. Third parties cantrigger application specific actions or activate devices. For example,house lights and/or heating/air-conditioning systems can activate when auser is heading home. Applications can use the platform to push theirown data to users. For example, a taxi/car share application can push atime estimate and capability to order a ride in time for a user leavingfor a predicted destination. A third party can additionally integratewith the platform to initialize and complete transactions. For example,a coffee shop can enable the capability to automatically order a user'spreferred drink when they are predicted to go to the shop. As a furtherexample, a user can input that they want a ride to the airport, and ataxi application and the platform preferably cooperatively order a taxiand have the taxi arrive at the user's current location when they needto leave for the airport.

The location prediction platform 110 of the preferred embodimentfunctions to be a remote system that manages, calculates, and initiatesthe prediction for location interactions of the system. The locationprediction platform 110 is preferably operable on an internet accessibleserver, and more preferably, the location predictive platform isoperable within an infrastructure of a server system hosted on a cloudhosting environment, distributed computing system, a computer cluster,or any suitable internet service/application infrastructure. Thelocation prediction platform 110 preferably includes an accountdatabase, a location log, a plurality of location service workermodules, and other suitable components to support implementation of thelocation prediction platform 110. The location prediction platform 110is preferably a multitenant platform, and the location predictionplatform 110 preferably serves the multiple users (i.e., deviceapplications of users) on shared resources. The location log preferablystores a log of location updates transmitted to the location predictionplatform 110 from the location aware applications 120. Preferably, alocation log is used to store the log of location information for allusers. Alternatively, a location log can be maintained separately forsubstantially each user account.

As shown in FIG. 8, the location service worker modules are routines,scripts, processes, or other operational modules that act and servicevarious operations of the service. A location service worker module(referred to as a “worker module”, or simply “worker”) function toperform at least one specialized task. The location service workermodules preferably work off of updates to the location log. Each workermodule can user various heuristics to generate data, predict locationinformation, push content to a user, or facilitate operations of thesystem in any suitable manner. There are at least three types oflocation service worker modules: a pattern worker module that maintainslocation patterns of a user, a content worker module that determinesconditions and content to send to a device, and a context worker modulethat detects particular events and scenarios to alert outside entities.A plurality of worker modules can be used to provide a variety ofdifferent capabilities to the system.

A departure worker module uses the current or most recent locationinformation and predicted location (e.g., predicted from calendar oremail data) to determine when a user should leave to arrive at apredicted location at a scheduled time. A late worker module can performa similar calculation, but the heuristic-based logic of the secondworker module is customized to push a notification to a user when theuser will be late for a predicted event.

Flight worker modules can specialize in flight-based features. Oneflight worker module can identify flight information from a personalplanning data source (e.g., email or a calendar) and display the flightinformation to the user to reinforce that the system has captured thatevent. Another flight worker module can push flight information andpossible flight related interactions to the mobile device when theflight is approaching (e.g., the day before the flight). Another flightworker module can use current device location and/or the user's trip tothe airport to trigger display of information that the user will need inthe hours preceding the flight (e.g., gate information, a digital copyof the flight, parking information etc.).

Hotel worker modules can perform similar services for hotel bookings.Rental car worker modules can perform services for car rentals that aresimilar to the flight worker modules. Other alternative implementationscan have worker modules for movie ticket sales, restaurant reservations,music venue tickets, business meetings, social parties (e.g., birthdayparties, bridal showers, weddings, baby showers, retirement parties,holiday parties, etc.).

A weather worker module can include heuristic-based logic to use thepredicted location of a user to push a weather report for thedestination when the user is expected to leave. Another weather workermodule can perform a similar service by pushing weather updates for thecurrent location in the upcoming time (e.g., a notification that it maystart raining in the next ten minutes). Weekend and workweek weatherworker modules can provide weather report notifications for a user'sexpected locations for the work week and the weekend. The workweekweather worker module preferably notifies the user on Sunday, and theweekend weather worker module preferably notifies the user on Friday orThursday.

A traffic worker module can provide traffic notifications based onpredicted locations. The traffic worker module preferably determines aroute to the predicted location, a current location of a user, and anytravel route patterns. The predicted route can be used to providetraffic news that may impact the trip to the user. The timing of thetraffic notifications can be configured to account for delays that thetraffic would cause the user. Additionally, a traffic updater workermodule can conditionally provide updates on the traffic if a trafficnotification has been pushed to the application and there has been anupdate in the traffic condition.

An internet-enabled device worker module can trigger actions in aregistered device based on the location prediction. For example, aninternet-enabled device worker module can turn on the house lights of auser when the user is arriving at home and turn off the house lightswhen the user is leaving for work.

A planning worker module preferably ingests location information fromthe location log to generate location pattern predictions. Locationpattern predictions are preferably location patterns such as times anddays of the week when the user is at home, work, school, the gym, orother locations. The patterns also characterize when a user will leave alocation and which location they will be going to next. The modeling ofthe patterns preferably relies on a plurality of pattern models. Apattern model is preferably an algorithmic model that predicts locationbased on past location information. A pattern model may be geared to aspecific type of pattern such as time frame or location type. Thepattern models are preferably Markov chains, but alternatively a patternmodel may be a neural network, a statistical model, machine learningapproach, or any suitable pattern model. In one preferredimplementation, each Markov chain is preferably targeted at differenttime frames. For example, one Markov chain can characterize patterns inworkday schedules and a more specialized Markov chain can characterizepatterns for Thursday, which could accurately predict location even ifthe Thursday schedule for the user is different from the other workdays.A location categorizing worker module can function to map locations withnames, labels, or categorization.

The location categorization worker module can use content that is usedto predict a location in order to apply a categorization, label, and/orname. Preferably, the location categorizing worker module can determinework and home and can be capable of generating personalizedcategorizations/labels such “Matt's house”, “Angela's work”, “my gym”,and the like. Furthermore, the location categorization worker module canupdate the categorization if the categorization changes (e.g., if theuser changes place of employment, the work label can automaticallychange). An event worker module can be configured to identify particularevents such as “leaving work”, “leaving home”, “arriving at work”,“arriving home”, “going grocery shopping”, and other event types. Theevents are preferably transitional events that signal a time andlocation parameter. The time parameter preferably indicates if the useris traveling to the location, returning from that location, or inprogress of being at that location.

The location aware application 120 of the preferred embodiment functionsto provide an operable component on a mobile device. The location awareapplication 120 is preferably a downloadable application that can beinstalled on a mobile device. The location aware application mayalternatively be a web application with access to location informationof the device, a background service, a service of the operating system,and/or any suitable operable component on a device. The mobile device ispreferably smart phone, a tablet, a wearable computing device, ahandheld gaming system, a car or vehicle computer system, a laptopcomputer, and/or any suitable device. The mobile device is preferablyone that often accompanies the user. The location patterns of the deviceare preferably assumed to substantially match those of the user. If themobile device is nearly always in the vicinity of the user (e.g., amobile phone), then location prediction can be applied to a wide varietyof applications. If the mobile device is only in the vicinity of theuser for portions of the user's routine, then the system can providemore targeted location prediction according to the nature of thatdevice.

The location aware application preferably transmits location informationof the device to the location prediction platform 110. The locationinformation is preferably in the form of latitude and longitudecoordinates. The location information is preferably retrieved from alocation service of the device, which can use GPS, IP locationinformation, cellular triangulation, and/or any suitable geographiclocation detection technique. The location aware application preferablyintelligently uses the location services of the device in a manner toreduce energy use, which promotes longer battery life. The locationinformation is preferably periodically updated, but based on thepredicted locations and times, the application can schedule polling oflocation services to reduce the polling. Additionally, the locationservices can be polled less frequently if the location aware applicationdetects a stationary location for a sustained period of time. Forexample, if a user is at work, the location aware application 120 canpole location every 30 minutes if the user has been at work for an hourand they usually work nine hours.

The location aware application 120 additionally includes a userinterface that is used to render content pushed to the location awareapplication 120 from the location prediction platform 110. The locationaware application 120 can use any suitable interface, but a stream ofcontent is one preferred variation for how to present content to theuser in a timely and contextually sensitive manner. The location awareapplication 120 additionally can communicate with outside services orapply processing logic to generate the appropriate content based oninstructions from the location prediction platform 110. In onevariation, the location prediction platform 110 can generate the contentand transmit the content to the location aware application 120 todisplay to the user. In another variation, the location predictionplatform 110 can determine the parameters of the content (e.g., contenttype and location information) and transmit a notification to thelocation aware application 120 with the content parameters. The locationaware application 120 then preferably generates and retrieves anyadditional information based on the parameters of the contentnotification.

The developer interface 130 of the preferred embodiment functions toprovide a way for outside developers to integrate functionality and datafrom the location prediction platform 110 into their applications orservices. The developer interface 130 is preferably an applicationprogramming interface (API), but the developer interface 130 mayalternatively be a plug-in engine, where developers can integratecustomized logic instructions to impact operation of the locationprediction platform 110 and/or the location aware applications 120.Preferably, a user will grant an outside application permission toaccess location information. The location information available to theoutside application can be abstracted or limited to any set of locationcategorizations, location contexts, or other suitable conditions. Oncepermissions are granted, the outside application can preferably receiveor retrieve location information relating to the user. The outsideapplications may use the developer interface 130 to enable a variety oflocation-based functionality. Additionally, the developer interface 130may include a capability for the outside application to supply contentthat is pushed from the location prediction platform 110 to the locationaware application 120.

2. Method for Providing Intelligent Location Information

As shown in FIG. 9, a method for providing intelligent locationinformation includes extracting event models from at least one personalplanning source, wherein a parameter of an event model includes an eventlocation S110; periodically receiving location information of at leastone mobile device S120; storing the location information in a locationlog S130; with an application worker module, maintaining user locationpatterns from the location log S140; generating a location predictionfrom the extracted event models and the user location patterns S150;with an application worker module, checking if the location predictionsatisfies a content requirement S160; if content requirement issatisfied, initiating content retrieval from at least one service S170;and pushing the content to a mobile device S180. The method functions touse a combination of location prediction signals to provide appropriatecontent to a user at the time and place where the content will beuseful. The method is preferably implemented in a location predictionplatform such as the one described above and as shown in FIG. 10.Content is preferably pushed to a location aware application that isoperable on a mobile device. Alternatively, the location predictionplatform and the location aware application can cooperatively generateand notify a user of relevant content. Alternatively, the method may beimplemented on any suitable system. In one preferred implementation ofthe method, a user benefits from the method by being notified ofweather, traffic, reservation details and related services (e.g.,flight, car, hotel, restaurant, etc.), meetings, and other information.

Block S110, which includes extracting event models from at least onepersonal planning source, functions to process data that relates toscheduled events of the user. An event model can be any suitablecharacterization of an event. Preferably, extracting an event modelincludes determining a location of the event, a time of the event,and/or a title or description of the event. Additionally, the eventmodel can include participants of the event, a categorization of theevent, related documents, related websites, and/or any additionalinformation for the event. The personal planning source can be anysuitable resource with information on activities, events, or meetings. Acalendar application/service, an email account, a social network (e.g.,with event planning features), a text message log, or any suitablepersonal planning data source. A user can be requested to authenticateor authorize access to the personal planning data source. A script orsoftware module preferably accesses, processes, and identifies eventsfrom the personal planning data source. Any suitable natural languageprocessing, data scraping, and/or event heuristics may be used toidentify an event and extract parameters that characterize the event.Event model data is preferably stored for a user so that the data may beaccessed and used when identifying various content conditions.

Block S120, which includes periodically receiving location informationof at least one mobile device, functions to update the locationprediction platform with the location of a device. The locationinformation preferably includes absolute geographic location such aslongitude and latitude, but may additionally include altitude and otherspecifications for geographic location. The location information mayadditionally include a location abstraction. A location abstraction ispreferably a higher order name for a location such as a human-definedname for the location. The location abstraction may include a streetaddress, a building name, a business name, location type, locationcategorization, and/or a user specific label. The received locationinformation may additionally be used to generate or retrieve additionallocation information such as querying a location service to identify thelocation abstraction for a particular longitude and latitude. Thelocation information is preferably sent by a location aware applicationoperable on a mobile device of a user. The location prediction platformpreferably receives location information updates for a plurality ofdifferent users. The location information updates are preferably spacedaccording to the change in location of the mobile device. If the user istraveling or frequently moving, the application of the mobile devicepreferably transmits more frequent location information updates (and theupdates are correspondingly received at the location prediction platformin a similar frequency). If the user is stationary and the mobile deviceis reporting small changes in location, the application of the mobiledevice can decrease the frequency of the location updates, which canhelp to conserve energy use on the device. The location awareapplication can determine the frequency of the updates. Alternatively oradditionally, the location prediction platform can request locationupdates from the location aware application at appropriate times. Thelocation prediction platform will preferably have location predictionsmodeled for a given user, and can use those to schedule when locationupdates should be acquired. For example, the location predictionplatform predicts that the user will be in a meeting for an hour, thelocation aware application will preferably be notified to not sendlocation updates until substantially near the end of the meeting. Thelocation information updates may alternatively be routinely scheduled oruse any suitable heuristic for sending of the location updates.

Block S130, which includes storing the location information in alocation log, functions to maintain a history of location data.Preferably, a database is used for storing location information for aplurality of users. In one variation, the location log uses the time ofthe location information as a key and stores the latitude and longitudedata along with an account identifier. An application worker module ofthe location prediction platform preferably actively works on recentupdates to the location log. When new location information is generated,an application worker module preferably begins to process theinformation. A subset of application worker modules may additionally beconfigured to work on new data of the location log in a set sequence.The method may alternatively be implemented without persistently storingthe location information, but instead temporarily storing theinformation to process the new location information.

Block S140, which includes an application worker module maintaining userlocation patterns from the location log, functions to determine locationpatterns of a user. A pattern worker module of the location predictionplatform preferably continuously updates location patterns for newlocation information. Maintaining user location patterns preferablyincludes generating predictions from location history stored in thelocation log. Maintaining a user location pattern preferably includesimplementing an algorithmic pattern model. In one variation, Markovchains are used to generate location predictions based on locationhistory, but the pattern model(s) may alternatively be a neural network,a statistical model, a machine learning approach, or any suitablepattern modeling approach. Preferably, a set of Markov chains ismaintained to predict the likelihood of moving another location based onthe current location. Of the set of Markov chains, there are preferablyat least two Markov chains for different time frames. For example, therecan be a Markov chain maintained for location patterns for the workweek,weekends, and each day of the week. Markov chains can additionallytarget other scenarios such as particular locations (e.g., patterns forthe San Francisco area versus patterns in Los Angeles), specialoccasions or holidays, patterns tied to particular personal events, orfor any suitable segment of location patterns. The appropriate Markovchains are preferably updated to reflect new data in the location log,which functions to constantly evolve the Markov chains. The Markovchains can additionally only use location data over a specified timeframe to determine the model, which would enable the Markov chains toupdate to reflect current patterns if the location patterns of a userchanges. The pattern model preferably uses absolute location information(e.g., longitude or latitude), but the pattern models may additionallyor alternatively work on location real-world names, categorization, ortype. A set of pattern models may be geared towards specific types oflocations such as grocery stores, gas stations, restaurants, shops, andthe like. For example, the pattern model may use the business name of acoffee shop as a location in addition to or as an alternative to thespecific geographic location. The patterns then can be based on generallocation patterns. For example, a user's routine of going to the samecoffee shop company each morning regardless of what city may thenpredict next location of the user in a new city. Similar to how patternmodels may be may be maintained for particular use-cases, scenarios, andcontexts (e.g., different time frames), pattern models may additionallybe maintained for particular locations. For example, a pattern model forstores when visiting a mall or shopping center may be maintained so thatthe system can predict the next store the user will likely visit.

Block S150, which includes generating a location prediction from theextracted event models and the user location patterns, functions topredict a location for a user. The prediction is preferably for the nextsignificant location. A significant location is preferably distinguishedfrom a transitory location in that the significant location is where auser will spend some time often for some activity. A plurality oflocation predictions can additionally be made. The location predictionsmay be for various times throughout the day, week, or month. Preferably,the location prediction is a combination of data from the maintainedlocation patterns and the extracted event models. Locations of eventmodels preferably represent high probability locations. The likelihoodof an event model location can be further increased by extracting orreceiving confirmation that the user plans to attend the event. In onevariation, when an event is extracted, the event information can bepushed to the location aware application, and a user can confirm orcancel the event. The location patterns are preferably also used, butcan be weighted, scored or given lower priority to confirmed events. Theset of Markov chains are preferably used to predict a location based ona user's location patterns. Preferably, the set of Markov chains areprocessed in combination, and depending on the scenario, the Markovchains predictions can be weighted. For example, on Mondays a Markovchain specific for Mondays is preferably given more weight than a Markovchain maintained for Tuesday patterns and even a Markov chain forworkdays. Some heuristical logic can additionally be used to determinethe likelihood of the location. For example, if a user confirms ameeting in New York, but the user is located in San Francisco 30 minutesbefore the meeting, the confirmed event is preferably weighted toindicate the low likelihood of that location.

Block S160, which includes a content worker module checking if thelocation prediction satisfies a content requirement, functions todetermine if content should be delivered for the current scenario.Content requirements can include conditions based on the user's currentlocation, the predicted location, properties of the predicted location(e.g., is there traffic), properties of the route from the currentlocation to the predicted location, relative aspects of the twolocations (e.g., time to travel between the two locations, is theweather significantly different, etc.), the time of the prediction,state of the application or the user account (e.g., has related contentbeen pushed to the user). One preferred content condition may be acondition of the current time being an expected departure time to travelto the next predicted location. The departure time is preferably basedon expected travel time between the predicted location and the currentlocation of the mobile device. The current location is preferably themost recently received location information of the user stored in thelocation log. In this variation, an outside mapping or travel timeestimation service may be queried. Other outside sources mayadditionally be queried such as weather services, traffic services,airport delay services, user accounts on various web portals, or anyoutside data source. Content requirements are preferably set for avariety of types of content. The requirements are customized so thatmeaningful and timely information and interactions are delivered to theuser according to the context. If the user is about to leave for work,the traffic to work may be displayed. If the user had a flight the nextday, the flight information and the weather in the destination city forthe duration of the trip may be displayed. Preferably there is aplurality of worker modules that check various content requirements. Thevarious worker modules can include flight worker modules, hotel workermodules, rental car worker modules, reservation worker modules, weatherworker modules, traffic worker modules, internet-connected device workermodules, and/or suitable types of worker modules.

Blocks S170 and S180, which include if the content requirement issatisfied, initiating content retrieval from at least one service andpushing the content to a mobile device, functions to trigger the displayof content on the mobile device of the user. In one variation, thecontent can be generated server-side (at the location predictionplatform). The content or at least a portion of the content mayalternatively be retrieved or generated at the location awareapplication. Some content and/or interactions can use services providedthrough an API of an outside vendor. As will be described below, a thirdparty developer can use the API of the location prediction platform topush his own content to the location aware application. In onevariation, the content is a push notification with text and/or media. Inanother variation, the content is eventually rendered in the locationaware application as an information view, and optionally an interactiveview. Preferably the content is displayed in the stream of the locationaware application. The information preferably includes related content.Additionally, interactions and services can be accessible through theview. The content pushed to the mobile device or location awareapplication preferably includes user interface elements pre-configuredto include location parameters in an interaction with an outsideservice. For example, content for the airport can include a button toorder a taxi. The button can be preconfigured to specify the locationand destination of the user when requesting a ride from the taxiservice. Thus one-click or context aware interactions can be integratedinto the content. The content is preferably transmitted automaticallyand without necessitating input from the user.

The method of the preferred embodiment can additionally include applyinguser categorization to a location S190, which functions to identify anduse user understandable names for locations. The categorization of alocation preferably applies some form of user understandable locationabstraction. Location abstraction can identify a street address, abuilding name, a business name, location type, location categorization,and/or a user specific label. User specific labels preferably includelocation categorizations such as “home”, “work”, “school”, “parent'shouse”, “Angela's work”, “my gym”, and the like. The user categorizationof a location is preferably applied based on extracted events modelsfrom the personal planning source. Natural learning processing and othercontent processing techniques can be used to extract terms, labels,and/or categorization that are used by the user (and associated users)to refer to a location. Preferably, a mapping between a locationcategorization and a geographic location can be found in one piece ofcontent of the personal planning source. For example, an email from auser may state “Meet me at my office located at 123 Example Street SanFrancisco”. The address and the user's label for the location (“office”)may be extracted from this content. Location categorization mayadditionally include the combination of personal planning data sourcesand location history (i.e., the location information stored in thelocation log). If a similar email is processed that states, “Meet me atmy office at 3 pm”, and at 3 pm of the corresponding day the user is ata particular location, then that is preferably used as a signal that theparticular location is the user's office. Additionally, such inferenceof location categorization can be completed without accessing a personalplanning source of the user. Some location categorization can occurbased upon the location patterns of a user. For example, where the userspends his or her time during business hours is preferably assigned a“work” location categorization, and where the user spends his or hernighttime and weekend time is preferably assigned a “home” locationcategorization. Location categorization can additionally leverage themultitenant nature of the location prediction platform to use thelocation categorizations of a plurality of users to determinecategorization of a location.

3. Alternative Method for Providing Intelligent Location Information

Additionally or alternatively, the method of the preferred embodimentcan include granting permissions to an outside application to accesslocation information of a user S200; a context worker module checking ifthe location prediction meets a set of context requirements S210; and ifthe set of context requirements is satisfied notifying the outside agentof a location prediction context S220, as shown in FIG. 11. Theseadditional or alternative steps function to enable a location predictionplatform. As the location prediction platform is hosted server side, thelocation information is readily accessible for outside applications andservices. The platform variation is preferably implemented on a locationprediction platform substantially similar as described above and asshown in FIG. 12. An application programming interface (API) or othersuitable developer interface such as a developer admin portal ispreferably provided to enable developers to easily integrate thefunctionality of their application and services with the locationinformation of the location prediction platform. The location predictioncapabilities can additionally be used to inform applications andservices of a user's expected locations. Furthermore, when used incombination with the location categorization capabilities of the method,location abstraction can provide a way for users to obtainlocation-enabled applications and services without revealing detailedgeographical information to applications. For example, instead ofknowing the home of a user is located at a specific longitude andlatitude, the outside application can only be notified of the “home”categorization and optionally the approximate geographic location (e.g.,San Francisco).

Block S200, which includes granting permissions to an outsideapplication to access location information of a user, functions toauthorize an entity to access and interact with the location informationof a user. Granting permissions preferably includes authenticating theidentity of a user, specifying/setting the permissions outsideapplication, and then receiving confirmation from the user to grant thepermissions to the outside application. The granting of permissions canuse an authorization process such as an open standard for authorization(e.g., oauth) or any suitable authorization process. The user canadditionally be asked to authenticate with the outside application if,for example, the outside application depends on user data. Thepermissions for the location information can specify the granularity ofthe location information and/or particular contexts that the applicationcan access. The granularity of the location can enable locationinformation with latitude and longitude information, approximatelocation information (e.g., 1 mile radius, city, state or country),specific location names (e.g., business names or site names), and/orlocation categorization (e.g., “home”, “work” or “school”). Thepermissions may be for particular sets of location information. A set oflocation information may limit access to location information to aparticular chain of businesses, types of locations (e.g., grocerystores), regions of a location (e.g., a park, inside a mall, a city,etc.), and other restricted sets of locations. Contexts can be specificscenarios such as leaving from a location, departing for a location,arriving at a location, staying at a location, will be in a location ata particular time (e.g., this afternoon, tomorrow, this week, etc.), orany suitable context scenario involving user location. For example, anapplication for a grocery store can only be granted access to locationinformation and be alerted of location contexts for “leaving for grocerystore”. The permissions can include any additional or alternativefeatures to customize the privacy and access to the location informationof the user.

Blocks S210 and S220, which include a context worker module checking ifthe location prediction meets a set of context requirements and if theset of context requirements is satisfied, notifying the outside agent ofa location prediction context, functions to send location informationupdates to the outside application. Blocks S200 and S210 can functionsubstantially similar to Blocks S160 and S170, except in that thecontext worker modules can trigger the delivery of location information(in a raw and/or abstraction format) to an outside entity rather than amobile device. The location information and contextual description ispreferably sent to the outside application without retrieving contentfrom an outside source as in Step S170. The context worker modulespreferably function to identify particular location prediction scenariosor contexts such as “leaving work”, “heading home”, “heading to Xlocation”, or “arriving at X location”. In a variation, the locationprediction platform can be queried by an application or regular updatesfrom the platform on the location can be transmitted to the outsideapplication without requiring the detection of a context scenario. Thelocation information in a response to a query is preferably abstractedto the location abstraction level specified in the permissions grantedto the outside application.

The platform variation of the method of the preferred embodiment canadditionally include receiving content from the outside application andpushing the received content to the location aware application S230,which functions to provide a seamless way for application and servicedevelopers to integrate customized content into a location basedpersonal assistant application such as the location aware application.The content is preferably pushed to the location aware application in amanner substantially similar to the content pushed in Block S180. Thecontent from the outside application can preferably provide any suitableinformation, layout, interfaces, interactions, and other contentelements. The content preferably conforms to a standard content formator specifications. In one implementation, the content from the outsideapplication is preferably displayed in a stream of the location awareapplication in a manner consistent with the content pushed as a resultof content worker modules of the location prediction platform. Thelocation aware application is preferably an application provided by theentity hosting and operating the location prediction platform.

The platform variations of the method of the preferred embodiment canhave various applications. As mentioned, the platform enables multipleapplications and services to use and/or integrate with the locationinformation and content of the location prediction platform. The outsideapplications preferably can use the platform aspects in at least twomanners. The first use of the outside application is to provide contentto the location aware application. As mentioned above, Block S230enables applications and services to generate customized content thatcan be delivered to users. Content from outside developers is preferablydependent on similar conditions as the content initiated by contentworker modules, and so the applications can deliver content in asimilarly relevant and timely manner. Users will preferably selectivelyadd various services (and grant permission to outside applications) fromthe location aware application to subscribe or signup for specializedcontent that is provided from outside applications.

A second use of the outside application is to trigger events. Theoutside application can use the location information for a variety ofinternal uses such as logging events, triggering actions, pushingcontent to a mobile application of that outside application developer,or any suitable response of the outside application. For example, a lifelogging application can track the time a user spends at work, at home,and traveling. In one variation, the outside application can be aservice controlling at least one internet connected device of the user.For example, the outside application can use the location information ofthe location prediction platform to turn on/off house lights; start,turn on, heat, or move a vehicle; augment an air-conditioning or heatingsystem of a house; activate a cooking device; and/or augment thebehavior of any suitable device. Furthermore, the outside applicationcan trigger transactions based on predicted location. For example,public transportation or taxis can be automatically paid (and optionallynotified of a ride request) based on a user's location prediction andexpected context (e.g., needs ride to location X). In another example, acoffee shop can enable a user to configure an account so that wheneverthe user is predicted to go to a favorite coffee shop of the user, afavorite drink is ordered and purchased. The user can simply walk to thecoffee shop and pick up their automatically purchased and orderedcoffee. Such applications and use cases enabled by outside applicationscan additionally be enabled and configured for a content worker moduleof the location prediction platform.

4. Exemplary Implementations

The system and methods of preferred embodiments can be implemented toprovide a variety of contextual location-based services. In preferredimplementations, a user will preferably download an application that istaking advantage of the method or participating in the execution of thedescribed methods. The application can be configured for receiving andinteracting with a variety of predictive location content, but theapplication may alternatively be a third party application that is usingthe API of a location prediction platform. One preferred application ofthe contextual location-based services of the system and method is inthe field of travel and more particularly flights, as described in thefollowing exemplary implementations.

In an exemplary implementation, user flight information, includingairline, flight number, departure time, and departure and arrivallocations, can be automatically accessed and extracted from booking data(i.e., a personal planning data source). Message content based on aworker module of the location prediction platform is preferablygenerated that includes the travel detail based upon user data andtravel data. User data can include location, travel history, purchasehistory, demographic information, or flight/travel preference, and anytravel data, such as related to an airport, a particular flight, aparticular aircraft, or travel to and from the airport, can inform themessage. A worker module of the location prediction platform preferablydetermines a substantially optimal time to transmit the travel detail tothe user based upon the user data (e.g., the location patterns of theuser and location information in the location log) and the travel data(e.g., event models). The message content is preferably transmitted sothat the message content is timely and substantially immediatelyrelevant to the user. The message content is preferably transmittedautomatically and without necessitating input from the user. Generally,the message content is preferably transmitted to the user at the timedetermined. However, duplicates of the message can also be sentsubsequently. For example, duplicate messages can be sent if the userdoes not positively indicate that he has read the message, such as byclicking an “Accept” or “OK” field after a previous message was sent.The message content is preferably sent in the form of a notification toa mobile electronic device of the user, such as a personal or companycellular phone as shown in FIGS. 13 and 14. However, the message can besent in the form of an email, a calendar alert, an automated phone callor voicemail, a SMS text message, or any other suitable form ofcommunication. In one variation, the message content is rendered ascontent in the steam of a location aware application. The message canadditionally or alternatively be accessible by the user from any of asmart phone, a tablet, a desktop or laptop computer, or any othersuitable mobile or static electronic device.

In one variation, the message content includes information relevant tothe user several hours or days before a scheduled departure. In oneexample, the message content includes a reminder that the user has aflight the subsequent day. In this example, the message content canfurther include a travel itinerary, such as airline, flight number, thedeparture and destination cities or airports, and the departure terminaland/or gate. The message content preferably reflects the systemsunderstanding of the next task of the user and includes relatedinformation in the message content. Furthermore, in this example, theoptimal time to push the message to the user, as determined by a contentworker module, can be user-specific. For example, the message can besent to the user when the user is known to be free or not in a meeting,when the user is home and has time to pack, when the user is near avendor, or when the user is with a friend (e.g., so he is reminded torequest a ride to the airport).

In another exemplary implementation, the message content includes theweather forecast at the destination location over the entire anticipatedstay of the user and can also include the forecast for the departure(and return) location on the anticipated day of departure (and return).The message content can further include suggestions for clothes to pack,such as a coat for expected cold weather (based upon forecast) or aswimsuit (based upon forecast, destination location, and/or amenitiesprovided at a hotel booked by the user). In another example, the messagecontent can include a suggestion for a camera for the destinationlocation that is scenic, toiletries for an extended trip, a book thatcan be completed on the flight or over the course of the trip, a backuplaptop battery for a long flight, a translator ‘app’ for a Smartphonefor a trip in a foreign country, an international calling plan, travelinsurance, or any other product or service that should be purchasedbefore departure or that would benefit the user while at the airportawaiting departure, while on the plane, or while in the destinationlocation. In the foregoing example implementation, the determineddelivery/push time of the message content (as determined by a contentworker module detecting the appropriate time requirements) can be whenthe user is at or near a grocery or convenience store, is at or near aclothing or apparel store, is shopping online, or is home from work onthe night before a flight. Additionally or alternatively, the determinedtime can be based upon store hours of a particular vendor, outlet, orcompany, such as a cellular provider, an insurance company, or aLaundromat. The time can additionally or alternatively be based upon aschedule or calendar event of the user prior to departure, such as goingto work or picking up children from school, or based upon any otherrelevant factor. For example the message that suggests purchasing sunscreen for a trip to the Bahamas can be pushed to the user when the useris returning from picking up a child from school and will shortly pass aTarget, Walgreens, or other grocery store.

In another exemplary implementation, the message content includesinformation relevant to the user on the day of a scheduled departure. Inone example, the message content includes a suggestion to depart for theairport, wherein the message takes the form of an alarm. In this exampleimplementation, the message content is preferably based upon the presentlocation of the user (e.g., as indicated by location service or a GPSmodule in a mobile electronic device carried by the user) and thedeparture location that is an airport. In this example, the determinedtiming of the message is preferably based upon user distance to theairport, flight delays, traffic and weather conditions, publictransportation (to the airport) times and delays, current or predictedairport security wait time, anticipated user checked baggage and currentor predicted airport baggage check wait time, preset gate wait time,user gate time wait preferences, user travel preferences, preferences ornature of additional users accompanying the user (e.g., children,spouse, friends), historic commute, wait, or travel times or preferencesof the user, or any other relevant metric, data, or preference. Forexample, for the user who preferably or historically arrives at theairport less than an hour before scheduled departure when on travellingalone on business trips, the message timing can account for thispreference and leave enough time for the user to reach the gate (e.g.,two- to ten-minute gate wait time) before boarding given user distanceto the airport, flight delays, traffic and weather conditions, predictedairport security wait time, predicted airport baggage check wait time,and the indicated means of travel to the airport, such as by car, taxi,bus, or train. In another example, for the user who is travellinginternationally with a wife and two young children, the message timingcan leave ample time for the user to collect his family, to pick uplast-minute items, to drive to the airport, to find long-term parking,and to pass customs, and the timing can also allow for at least aone-hour gate wait time to give the user time to regroup or to take careof any last-minute issues. In this example implementation, the messagethat is a suggestion to depart for the airport can also include asuggestion for a travel method, such as a taxi or rideshare reservation,a train or bus schedule, or confirmation that a friend of family memberwill or is on his way to pick up the user (e.g., by accessing GPS dataof the friend or family member to determine proximity to the user).However, the message can be timed according to any other schema, and thesuggestion to leave for the airport can additionally or alternatively beprovided the day before the scheduled departure, as in the precedingvariation, or at any other time.

In another exemplary implementation, the message content is an alertthat a flight was delayed or cancelled. This can also trigger thecontent that aids in or triggers the act of finding a suitablereplacement flight.

In another exemplary implementation, the message content is a boardingpass for the user. In this example, when the user is within a certaindistance to, arrives at, or walks into a terminal of the departureairport, such as indicated by a GPS module in a mobile device carried bythe user, the location prediction platform generates the message contentby pushing user identification information to a commercial airlineflight reservation server, thus checking-in the user and pushing messagecontent that includes a digital boarding pass, such as a QR code. Inthis variation, the timing the message content is preferably associatedwith the location of the user, wherein the location of the user that isproximal the airport triggers accessing the message that is the boardingpass and initiates presentation of the boarding pass to the user. Thedigital boarding pass is preferably presented to or accessible by theuser through the mobile electronic device carried by the user such thatthe user can check baggage, pass a security checkpoint, and/or board aplane by presenting the mobile electronic device to an airport official.

In another exemplary implementation, the message content is related to auser wait period within an airport. For example, the message can be thelocation of a free Wi-Fi hotspot within the airport for the user who ison a business trip, the location of a bookstore within the airport forthe user who is an avid reader, the location of a sports bar within theairport for the user who is a sports fan, or the location of arestaurant within or near the airport for the user whose has not eatenor prefers a type of food served in the restaurant. In another example,the message can be the departure gate or a departure gate change. Inthis example implementation, the timing of the message content ispreferably determined based upon the location of the user who is withinor proximal an airport terminal, the time of day (e.g., lunch time), anevent (e.g., a broadcast sporting event), an anticipated need of theuser (e.g., email or internet access), or any other suitable variable oruser need.

In any of the foregoing exemplary implementations, the message contentcan be in the form of or include an advertisement for a product orservice, wherein the product or service is selected based upon a knownand specific need of the user that is directly related to travel orimplied by a travel plan. For example, a clothing item suggested to theuser based upon a travel destination (e.g., a swimsuit) can be aclothing item from a particular brand or company that pays foradvertising. In another example, a suggestion to depart for an airportcan include an advertisement for a private airport limousine service,despite the fact that the user historically regularly drives himself tothe airport. In this example, the message can also include a comparisonof long-term parking rates and limousine rates to further persuade theuser to engage the limousine service. The message content can also oralternatively include an advertisement for a daily deal, coupon, orother product, service, or experience particular to the destinationlocation such that advertisements can be pushed to the user based notonly on current user location but also an anticipated future userlocation. For example, the message can include a discount for lunch at aworld-famous pizza place in New York for the user traveling to New Yorkor an advertisement for the San Diego Zoo for the user traveling to SanDiego. However, any message containing any other relevant travel-relatedinformation can be transmitted to the user in any other way andaccording to any other timing.

A variation of the exemplary implementation can include transmitting themessage to an affiliate of the user. In this variation, the messagecontent includes travel-related information relevant to the affiliate ofthe user. The affiliate can be a friend, family member, colleague, hireddriver, or a person otherwise associated with the user. The userpreferably selects the affiliate, through the client-side interface orthe application described above, by providing contact information of theaffiliate, such as a phone number, an email address, an instantmessaging username, or a link to a social network profile. The messagethat is relevant to the affiliate is preferably transmitted to theaffiliate through the contact information provided by the user. Themessage can be transmitted to the affiliate as a SMS text message, anemail, an automated phone call or voicemail message, an instant message,a Facebook wall post, a Twitter message, or any other suitable text-,audio-, or video-based message.

Transmission of the message to the affiliate can be handled by theelectronic device of the user, by a remote server of the locationprediction platform, by the network, or by any other suitable messagingplatform, device, or server. The message can be transmitted to theaffiliate automatically, such as given a trigger event or at a timedetermined by a worker module of the platform. Alternatively,transmission of the message to the affiliate can require manual inputfrom the user that confirms the message. In this alternative, thisvariation can serve to automatically generate travel-related messagesfor the user.

In one example of this variation, the message transmitted includes arequest, on behalf of the user, for a ride to an airport. In thisvariation, the affiliate can be any of family member, a friend, acoworker module, a taxi, limousine, or personal driver, a rideshare orrental car server, or any other suitable entity. The affiliate cantherefore be automatically notified of a transportation need of theuser. In this example implementation, the message is preferablytransmitted to the affiliate substantially before the scheduleddeparture such that the affiliate can plan for and accept the riderequest substantially without inconvenience and/or such that analternative affiliate can be found to drive the user if needed. In thisexample implementation, the automatic messaging of affiliates canfurther handle ride requests sent to multiple affiliates, wherein thefirst accepted ride request triggers cancellation of all other riderequests. Therefore, this variation of the exemplary implementation canfunction to automatically push a ride request, on behalf of the user, tothe affiliate in a timely fashion and manage the ride request for theuser and the affiliate. Additionally or alternatively, the messagetransmitted to the affiliate can be a reminder for the affiliate todrive the user to the airport. In this variation, the message can betransmitted to the affiliate the day before the user is scheduled todepart. Alternatively, the message can be transmitted to the affiliateas an alert to leave, wherein the message accounts for the distancebetween the affiliate and the user, traffic conditions, preferences ofthe affiliate, user distance to the airport, flight delays, traffic andweather conditions, current or predicted airport security wait time,anticipated user checked baggage and current or predicted airportbaggage check wait time, preset gate wait time, user gate time waitpreferences, user travel preferences, preferences or nature ofadditional users accompanying the user, historic commute, wait, ortravel times or preferences of the user, or any other relevant metric,data, or preference.

In another example of this variation, the message transmitted to theaffiliate includes a travel update related to an itinerary or travelevent of the user. For example, the message can be “Arrived at theairport,” “Just passed security,” “Reached my gate in time,” “Boarding,”“About to take off,” “Just landed,” “Just disembarked—heading to baggageclaim,” “Baggage just arrived,” “Waiting outside of Arrivals at TerminalA,” “Flight delayed 30 minutes,” “Flight cancelled,” or any otherrelevant travel-related phrase or message. In this variation, theapplication, network, or remote server handling at least a portion ofexemplary system and method implementation preferably accesses any oneor more of a GPS module in a mobile electronic device carried by theuser, an independent commercial airline booking service or server, anin-house commercial airline booking service or server, a flight scheduleservice or server, and/or a real-time flight tracking service or serverto ascertain a travel event or landmark that informs the message sent tothe affiliate. As described above, any of these messages can beautomatically transmitted to the affiliate, such as at a time determinedby a worker module of the platform, or the message can be automaticallygenerated and only sent to the affiliate given a positive input from theuser. In the former example, the message is preferably generated,handled, and transmitted by the remote server or network such that themessage can be sent to the affiliate even when a mobile electronicdevice of the user is off or out of Wi-Fi or cellular range. However,the message can be of any other form or content, handled by any otherentity, and transmitted to the affiliate according to any other schema.

Any of the foregoing exemplary variations and implementation details canbe applied to other forms of travel, such as travel by train, ship, orbus, wherein any of the aspects of the exemplary implementation can beused to book train, boat, or bus fare and/or to transmit messages to theuser and/or affiliate regarding travel on the train, boat, or bus,respectively. However, the first and second preferred methods S100, S200can be used or implemented in any other way. Additionally oralternatively, any of the foregoing exemplary variations andimplementation details can be applied to booking a hotel reservation,booking a rental vehicle, booking a guided tour, making a restaurantreservation, planning a meeting, planning events, organizing a personalcalendar, or any suitable application.

The system and methods of the preferred embodiment and variationsthereof can be embodied and/or implemented at least in part as a machineconfigured to receive a computer-readable medium storingcomputer-readable instructions. The instructions are preferably executedby computer-executable components preferably integrated with thelocation prediction platform and/or location aware application. Thecomputer-readable medium can be stored on any suitable computer-readablemedia such as RAMs, ROMs, flash memory, EEPROMs, optical devices (CD orDVD), hard drives, floppy drives, or any suitable device. Thecomputer-executable component is preferably a general or applicationspecific processor, but any suitable dedicated hardware orhardware/firmware combination device may alternatively or additionallyexecute the instructions.

As a person skilled in the art will recognize from the previous detaileddescription and from the figures and claims, modifications and changescan be made to the preferred embodiments of the invention withoutdeparting from the scope of this invention defined in the followingclaims.

What is claimed is:
 1. A method comprising: extracting event models fromat least one personal planning source of a user, wherein a parameter ofan event model includes event location; periodically receiving locationinformation of at least one mobile device of the user; storing thelocation information in a location log; maintaining user locationpatterns through the location log; generating a location prediction fromthe extracted event models and the user location patterns; using a firstcontent worker module, checking if the location prediction meets a setof content requirements; if the set of content requirements issatisfied, initiating content retrieval from at least one service; andpushing the content to the mobile device.
 2. The method of claim 1,wherein extracting event models from the at least one personal planningsource of the user includes determine one or more parameters of apredetermined event identified by the event model.
 3. The method ofclaim 1, wherein the location prediction includes an estimated futurelocation of the user that is informed by event data of the extractedevent models found within the at least one planning source and the userlocation patterns that were determined independent of a current route ofthe user.
 4. The method of claim 1, wherein the location predictionincludes a predicted future location of the user, and wherein generatingthe location prediction includes implementing a set of Markov chains todetermine a likelihood of the user moving to the predicted futurelocation based on a current location of the user.
 5. The method of claim1, generating a plurality of pattern models based on a location historyof the mobile device of the user and a plurality of location categories.6. The method of claim 1, wherein the at least one personal planningsource includes one or more of a social network and a text message log.7. The method of claim 1, wherein maintaining user location patternscomprises updating a plurality of pattern models that characterizelocation patterns.
 8. The method of claim 1, wherein the contentcondition comprises a predefined condition of a current time being anexpected departure time to travel to the location prediction.
 9. Themethod of claim 1, wherein the expected departure time is defined basedon an expected travel time between the location prediction and a currentlocation of the mobile device.
 10. The method of claim 1, furthercomprising a second content worker module checking if the locationprediction meets another set of content requirements of the secondcontent worker module.
 11. The method of claim 10, wherein the firstcontent worker module is for a traffic content scenario and the secondcontent worker module for a Internet content scenario.
 12. The method ofclaim 1, further comprising granting permissions to an outsideapplication to access location information of the user; a context workermodule checking if the location prediction meets a set of contextrequirements and notifying the outside application of the locationprediction context if the set of context requirements is satisfied. 13.A method comprising: granting permissions to an outside application toaccess location information of a user; at a server of a locationprediction platform, periodically receiving location information of atleast one mobile device of the user; storing the location information ina location log of the location prediction platform; maintaining userlocation patterns through the location log; generating a locationprediction from the user location patterns; using a context workermodule, checking if the location prediction meets a set of contextrequirements; and if the set of context requirements is satisfied,notifying the outside application of a location prediction context. 14.The method of claim 13, wherein the context requirements identifylocation prediction scenarios that include one or more actions beingperformed by the user with respect to a particular location.
 15. Themethod of claim 14, further comprising extracting event models from atleast one repository of scheduled events of the user, wherein aparameter of an event model includes an event location; and whereingenerating the location prediction further comprises generating thelocation prediction from the extracted event models and the userlocation patterns.
 16. method of claim 13, further comprising providinga location aware application; for a set of content worker modules, acontent worker module checking if the location prediction meets a set ofcontent requirements and pushing content associated with the contentworker module to the at least one mobile device if the set of contentrequirements is satisfied.
 17. The method of claim 13, wherein thelocation prediction platform comprises a multitenant platform; andwherein location information for a plurality of users is kept in thelocation log.
 18. method of claim 15, further comprising applying a usercategorization to a location based on the extracted event models fromthe at least one repository of scheduled events of the user; and whereinthe location prediction context describes the location information usingthe user categorization of the predicted location.
 19. The method ofclaim 18, wherein granting permissions to an outside application toaccess location information comprises the granted permissionsrestricting location information to a set of location categorizations.20. The method of claim 14, further comprising receiving content fromthe outside application; and pushing the content from the outsideapplication to the mobile device.